﻿Imports System.Data
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.OleDb
Imports System
Imports System.Globalization


Partial Class Interfaz_ModuloAdministracion_frmAdminPresupuesto
    Inherits System.Web.UI.Page

    Dim CL As Logica.ModuloAdministracion.ControladorLogica
    Dim dataPresupuesto As New DataSetPresupuesto
    Dim dataPresupuestoCliente As New DataSetPresupuestoCliente

#Region "Datas"
    Dim dtDatosItems As New DataTable
    Dim dataset As New DataSet
    Dim dtDatosMat As New DataTable
    Dim datasetMat As New DataSet
    Dim dtDatosInfoPres As New DataTable
    Dim datasetInfoPres As New DataSet
#End Region

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        CL = Logica.ModuloAdministracion.ControladorLogica.getInstance
        Dim i As Integer

        Dim ArrayCliente As New ArrayList
        Dim ArrayActividad As New ArrayList
        Dim arrayProveedores As New ArrayList
        Dim arrayPresupuestos As New ArrayList
        Dim arrayVendedor As New ArrayList

        ArrayCliente = CL.obtenerCliente()
        arrayPresupuestos = CL.ObtenerPresupuesto()
        arrayVendedor = CL.ObtenerUsuario()

        addAtributesToData()

        If CL.visibilidadesFormsInternos("Administracion", Session("user").ToString) = False Then
            Me.Mensaje("Usted NO cuenta con los permisos necesarios para ingresar a esta sección. Para solucionar este problema favor comunicarse con el administrador de sistemas")
            Response.Redirect("Index.aspx")
        End If

        If Session("GridItems") Is Nothing Then
            Session("GridItems") = dtDatosItems
        Else
            dtDatosItems = DirectCast(Session("GridItems"), DataTable)
        End If

        If Not Page.IsPostBack Then
            Try
                Me.BtnUpdateCampos.Visible = False
                dtDatosItems.Clear()
                LblTxtEstado.Visible = False
                LblEstadoPts.Visible = False
                LblEstado.Visible = False

                cargarDatosprimariosInforme()

                For i = 0 To ArrayCliente.Count - 1
                    Dim datosCliente As New ListItem

                    datosCliente.Text = DirectCast(ArrayCliente.Item(i), Cliente).RznSocial
                    datosCliente.Value = DirectCast(ArrayCliente.Item(i), Cliente).ID

                    Me.DropCliente.Items.Add(datosCliente)
                Next


                For i = 0 To arrayPresupuestos.Count - 1
                    Dim presuObtenido As Presupuesto = DirectCast(arrayPresupuestos.Item(i), Presupuesto)

                    If presuObtenido.estado = "P" Or presuObtenido.estado = "E" Then
                        Me.DropSeleccionarPresupuesto.Items.Add(presuObtenido.id)
                    End If

                    If presuObtenido.estado = "A" Then
                        Me.DropSeleccionarPresupuestoAprobados.Items.Add(presuObtenido.id)
                    End If

                Next

                For i = 0 To arrayVendedor.Count - 1
                    Me.DropVendedor.Items.Add(DirectCast(arrayVendedor.Item(i), Usuario).RefEmpleado)
                Next


                dtDatosItems.Columns.Add(New DataColumn("ID"))
                dtDatosItems.Columns.Add(New DataColumn("TAREA"))
                dtDatosItems.Columns.Add(New DataColumn("OBSERVACION"))
                dtDatosItems.Columns.Add(New DataColumn("NOTASV"))
                dtDatosItems.Columns.Add(New DataColumn("DESCRIPCION"))
                dtDatosItems.Columns.Add(New DataColumn("NOTASC"))
                dtDatosItems.Columns.Add(New DataColumn("BOTONMAT"))
                dtDatosItems.Columns.Add(New DataColumn("BOTONACT"))


                Me.GridItems.DataBind()
                Me.GridItems.DataSource = Me.dtDatosItems

            Catch
            End Try
        End If
        Me.GridItems.DataSource = Me.dtDatosItems

        If Me.lblIdPresupuesto.Text <> "" Then
            actualizarPresupuesto()
        End If

    End Sub

#Region "Funcionalidades"

    Private Sub agregarPresupuestoCabezera()
        Try
            Dim cliente As Cliente = DirectCast(CL.obtenerClienteID(DropCliente.SelectedValue).Item(0), Cliente)

            If Me.DropCliente.Text <> "" And Me.TxtFecha.Text <> "" And Me.TxTCondiciones.Text <> "" And Me.DropVendedor.Text <> "" And _
            Me.TxTatencion.Text <> "" And Me.TxTGarantia.Text <> "" And Me.TxTRequisicion.Text <> "" And Me.TxTEntrega.Text <> "" And Me.TxTPlano.Text <> "" _
            And Me.TxTEstimadoSr.Text <> "" And Me.TxTPrecio.Text <> "" And Me.TxTCondiciones.Text <> "" And Me.TxTPlazosEntrega.Text <> "" _
            And Me.TxTLugarEntrega.Text <> "" And Me.TxTValidezOferta.Text <> "" And Me.TxtDescripcionGeneral.Text <> "" And Me.TxtCantidadCabezera.Text <> "" Then

                Me.Panel1.Visible = True
                Me.LblAvisoLlenarCampos.Text = ""
                Dim precioclientepresupesto As String = "0"

                If TxtTotalPresupuesto.Text <> "" Then
                    precioclientepresupesto = Me.TxtTotalPresupuesto.Text
                End If


                Dim usuario As Usuario = DirectCast(Session("UsuarioConectado"), Usuario)

                Dim nuevoPresupuesto As New Presupuesto(0, Me.TxtFecha.Text, TxtCondVenta.Text, TxTatencion.Text, TxTGarantia.Text, _
                                 TxTEntrega.Text, TxTPlano.Text, -1, -1, -1, CInt(eliminarFormatoNumero(Me.TxtGastosGralMat.Text)), CInt(eliminarFormatoNumero(TxTPorMate.Text)), _
                                CInt(eliminarFormatoNumero(Me.TxtUtilMat.Text)), CInt(eliminarFormatoNumero(TxTDescuentoMat.Text)), cliente.ID, DropVendedor.Text, TxTRequisicion.Text, "P", CInt(Me.TxtCantidadCabezera.Text), Me.TxtDescripcionGeneral.Text, _
                                usuario.ID, Date.Now, Me.TxTEstimadoSr.Text, Me.TxTPrecio.Text, Me.TxTCondiciones.Text, Me.TxTPlazosEntrega.Text, Me.TxTLugarEntrega.Text, Me.TxTValidezOferta.Text, CInt(precioclientepresupesto))

                CL.InsertarPresupuestoTemporal(nuevoPresupuesto)
            Else
                Me.LblAvisoLlenarCampos.Text = "Para Ingresar un nuevo item necesita completar todos los datos"
            End If

            Me.lblIdPresupuesto.Text = CL.obtenerUltimoPresupuesto()
        Catch ex As Exception
            LblAvisoLlenarCampos.Text = ex.ToString
        End Try

    End Sub

    Private Sub InsertarItemActividadGV()
        Try
            Dim drDatos As DataRow = dtDatosItems.NewRow

            drDatos.Item("ID") = CL.obtenerUltimoPresupuestoSubproyecto
            drDatos.Item("TAREA") = Me.TxTtareaRealizar.Text
            drDatos.Item("OBSERVACION") = Me.TxTObservacionTaller.Text
            drDatos.Item("NOTASV") = Me.TxTNotasClientes.Text
            drDatos.Item("DESCRIPCION") = Me.TxtDescripcionTrabajo.Text
            drDatos.Item("NOTASC") = Me.TxTNotasClientes.Text

            dtDatosItems.Rows.Add(drDatos)

            Me.GridItems.DataSource = dtDatosItems
            Me.GridItems.DataBind()


        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Sub InsertarItemActividadDB()

        If Me.TxTtareaRealizar.Text <> "" And Me.TxTObservacionTaller.Text <> "" _
         And Me.TxTNotasClientes.Text <> "" And Me.TxtDescripcionTrabajo.Text <> "" And Me.TxTNotasClientes.Text <> "" _
         And TxtCantidadSubProyecto.Text <> "" And txtUnidadMedidaSubProyecto.Text <> "" Then


            Dim presusubproyec As presupuestosubproyecto
            presusubproyec = New presupuestosubproyecto(-1, Me.TxTtareaRealizar.Text, Me.TxtDescripcionTrabajo.Text, _
            Me.TxTObservacionTaller.Text, Me.TxTNotasClientes.Text, Me.TxTNotasVentas.Text, Me.lblIdPresupuesto.Text, "no", _
            TxtCantidadSubProyecto.Text, txtUnidadMedidaSubProyecto.Text)

            CL.insertarPresupuestoSubProyecto(presusubproyec)

            InsertarItemActividadGV()


            Me.LimpiarItem()
            Me.GridItems.ForeColor = Drawing.Color.Blue
            Me.LabelAvisoIngresoItem.Text = "Los datos han sido ingresados satisfactoriamente"

        Else
            Me.LabelAvisoIngresoItem.ForeColor = Drawing.Color.Red
            Me.LabelAvisoIngresoItem.Text = "Complete todos los datos"
        End If

    End Sub

    Private Sub cargarDatosprimariosInforme()
        Me.TxTEstimadoSr.Text = "Tenemos el agrado de cotizar para Ustedes La fabricación de estructuras de " + _
                                "soportes primarios y secundarios para el proyecto Esperanza, según lo siguiente: "

        Me.TxTPrecio.Text = "Son netos, expresados en moneda nacional y se les debe agregar el  Iva."

        Me.TxTCondiciones.Text = "OC  al inicio de los trabajos y cancelación contra presentación de factura " + _
                                "emitida previa aprobación por parte de SKVyV del  estado de pago " + _
                                "correspondiente al mes recién vencido."

        Me.TxTPlazosEntrega.Text = "De acuerdo a un programa de suministros  presentado por SkVyV y previa " + _
                                    "recepción de la OC. "

        Me.TxTLugarEntrega.Text = "Cargado sobre camión en las instalaciones del cliente en Minera " + _
                                "Esperanza u otro lugar que el cliente especifique, siempre y cuando la " + _
                                "distancia en kilómetros no supere al de Antofagasta – Minera " + _
                                "Esperanza. En caso de solicitar entregas fuera de programa, estas serán tratadas en " + _
                                "cada ocasión. "

        Me.TxTValidezOferta.Text = "60 dias"
    End Sub

    Private Sub CargarPresupuestosAntiguos(ByVal criterio As String)
        Dim presuArray As New ArrayList
        ' Se limpia el dataTAble
        LblEstado.Visible = True
        LblTxtEstado.Visible = True
        LblEstadoPts.Visible = True

        dtDatosItems.Clear()

        'Se busca el presupuesto seleccionado en el dropBoxList
        If criterio = "Aprobados" Then
            presuArray = CL.ObtenerPresupuestoCriterio(Me.DropSeleccionarPresupuestoAprobados.Text)
        Else
            If criterio = "No Aprobados" Then
                presuArray = CL.ObtenerPresupuestoCriterio(Me.DropSeleccionarPresupuesto.Text)
            End If
        End If

        'activa panel invisible de subproyectos y se desabilita boton ingresar item
        Me.Panel1.Visible = True
        Me.agregarItem.Enabled = False

        ' se convierte presupuesto encontrado a presupuesto y se buscan item del presupuesto encontrado.
        Dim Presupuesto As Presupuesto = DirectCast(presuArray.Item(0), Presupuesto)
        Dim PresuSubProyArray As ArrayList = CL.obtenerSubProyectoCriterio(Presupuesto.id)

        'ingreso id presupuesto al label
        Me.lblIdPresupuesto.Text = Presupuesto.id


        If presuArray.Count > 0 Then

            Me.DropCliente.SelectedValue = DirectCast(CL.obtenerClienteID(Presupuesto.fkCliente).Item(0), Cliente).ID
            Me.TxtFecha.Text = Presupuesto.fecha
            Me.TxtCondVenta.Text = Presupuesto.condVenta
            Me.DropVendedor.Text = DirectCast(CL.obtenerEmpleadoFK(Presupuesto.fkvendedor).Item(0), Empleado).Rut
            Me.TxTatencion.Text = Presupuesto.atencion
            Me.TxTGarantia.Text = Presupuesto.garantias
            Me.TxTEntrega.Text = Presupuesto.entrega
            Me.TxTPlano.Text = Presupuesto.plano
            Me.TxTRequisicion.Text = Presupuesto.requisicion

            Me.TxTEstimadoSr.Text = Presupuesto.estimadosenor
            Me.TxTPrecio.Text = Presupuesto.precio
            Me.TxTCondiciones.Text = Presupuesto.condicion
            Me.TxTPlazosEntrega.Text = Presupuesto.plazoentrega
            Me.TxTLugarEntrega.Text = Presupuesto.entrega
            Me.TxTValidezOferta.Text = Presupuesto.validezoferta

            Me.TxtGastosGralMat.Text = Presupuesto.gastosgeneralesporcentaje
            Me.TxTPorMate.Text = Presupuesto.utilidadporcentaje
            Me.TxtUtilMat.Text = Presupuesto.utilidadmateriales
            Me.TxTDescuentoMat.Text = Presupuesto.descuentoPorcentaje
            Me.TxtCantidadCabezera.Text = Presupuesto.CantidadCabezera
            Me.TxtDescripcionGeneral.Text = Presupuesto.DescripcionCabezera
            Me.TxtTotalPresupuesto.Text = Presupuesto.TotalFicticio



            Dim estado As String = Presupuesto.estado

            If estado = "P" Then
                LblEstado.Text = "Pendiente"
                Me.GridItems.Enabled = False
                Me.BtnGuardar.Enabled = False
                Me.BtnIngresarItem.Enabled = False
            ElseIf estado = "E" Then
                LblEstado.Text = "En espera"
                Me.BtnGuardar.Enabled = True
                Me.GridItems.Enabled = True
                Me.BtnIngresarItem.Enabled = True
            ElseIf estado = "A" Then
                LblEstado.Text = "En espera"
                agregarItem.Enabled = True
                Me.BtnGuardar.Enabled = True
                Me.GridItems.Enabled = True
                Me.BtnIngresarItem.Enabled = True
            End If



        End If

        'se llena gridItem con los subproyectos del proyecto seleccionado
        If PresuSubProyArray.Count > 0 Then
            Try
                Dim j As Integer

                For j = 0 To PresuSubProyArray.Count - 1

                    Dim drDatos As DataRow = dtDatosItems.NewRow
                    Dim arraySP As presupuestosubproyecto = DirectCast(PresuSubProyArray.Item(j), presupuestosubproyecto)

                    drDatos.Item("ID") = arraySP.id
                    drDatos.Item("TAREA") = arraySP.nombreSubProyecto
                    drDatos.Item("OBSERVACION") = arraySP.observacionTaller
                    drDatos.Item("NOTASV") = arraySP.notasVentas
                    drDatos.Item("DESCRIPCION") = arraySP.descripcionSubProyecto
                    drDatos.Item("NOTASC") = arraySP.notasVentas

                    dtDatosItems.Rows.Add(drDatos)

                Next j
            Catch ex As Exception
            End Try

        End If

        Me.GridItems.DataSource = dtDatosItems
        Me.GridItems.DataBind()

        If criterio = "Aprobados" Then
            Dim precioclientepresupesto As String = "0"

            If TxtTotalPresupuesto.Text <> "" Then
                precioclientepresupesto = Me.TxtTotalPresupuesto.Text

            End If

            Dim cliente As Cliente = DirectCast(CL.obtenerClienteID(DropCliente.SelectedValue).Item(0), Cliente)
            Dim usuario As Usuario = DirectCast(Session("UsuarioConectado"), Usuario)

            Dim nuevoPresupuesto As New Presupuesto(0, Me.TxtFecha.Text, TxtCondVenta.Text, TxTatencion.Text, TxTGarantia.Text, _
                             TxTEntrega.Text, TxTPlano.Text, -1, -1, -1, CInt(eliminarFormatoNumero(Me.TxtGastosGralMat.Text)), CInt(eliminarFormatoNumero(TxTPorMate.Text)), _
                            CInt(eliminarFormatoNumero(Me.TxtUtilMat.Text)), CInt(eliminarFormatoNumero(TxTDescuentoMat.Text)), cliente.ID, DropVendedor.Text, TxTRequisicion.Text, "P", CInt(Me.TxtCantidadCabezera.Text), Me.TxtDescripcionGeneral.Text, _
                            usuario.ID, Date.Now, Me.TxTEstimadoSr.Text, Me.TxTPrecio.Text, Me.TxTCondiciones.Text, Me.TxTPlazosEntrega.Text, Me.TxTLugarEntrega.Text, Me.TxTValidezOferta.Text, CInt(precioclientepresupesto))

            CL.InsertarPresupuestoTemporal(nuevoPresupuesto)
            Me.lblIdPresupuesto.Text = CL.obtenerUltimoPresupuesto()
            Me.agregarItem.Enabled = False

        End If

    End Sub

    Private Sub finiquitarPresupuesto()
        Try
            CL.ActualizarEstadoPrespuestoPendiente(Me.DropSeleccionarPresupuesto.SelectedValue)
            LblAvisoLlenarCampos.Text = "El presupuesto ha sido generado con exito"

            Dim presuArray As ArrayList = CL.ObtenerPresupuestoCriterio(Me.DropSeleccionarPresupuesto.Text)

            ' se convierte presupuesto encontrado a presupuesto y se buscan item del presupuesto encontrado.
            Dim Presupuesto As Presupuesto = DirectCast(presuArray.Item(0), Presupuesto)
            Dim estado As String = Presupuesto.estado

            If estado = "P" Then
                LblEstado.Text = "Pendiente"
            ElseIf estado = "E" Then
                LblEstado.Text = "En espera"
            End If


        Catch ex As Exception
            LblAvisoLlenarCampos.Text = ex.ToString
        End Try

    End Sub

    Private Sub actualizarPresupuesto()
        Try
            Dim cliente As Cliente = DirectCast(CL.obtenerClienteID(DropCliente.SelectedValue).Item(0), Cliente)

            If Me.DropCliente.Text <> "" And Me.TxtFecha.Text <> "" And Me.TxTCondiciones.Text <> "" And Me.DropVendedor.Text <> "" And _
            Me.TxTatencion.Text <> "" And Me.TxTGarantia.Text <> "" And Me.TxTRequisicion.Text <> "" And Me.TxTEntrega.Text <> "" And Me.TxTPlano.Text <> "" _
            And Me.TxTEstimadoSr.Text <> "" And Me.TxTPrecio.Text <> "" And Me.TxTCondiciones.Text <> "" And Me.TxTPlazosEntrega.Text <> "" _
            And Me.TxTLugarEntrega.Text <> "" And Me.TxTValidezOferta.Text <> "" And Me.TxtDescripcionGeneral.Text <> "" And Me.TxtCantidadCabezera.Text <> "" _
            And Me.TxtGastosGralMat.Text <> "" And Me.TxTPorMate.Text <> "" And Me.TxtUtilMat.Text <> "" And Me.TxTDescuentoMat.Text <> "" Then

                Dim precioclientepresupesto As Integer
                Dim neto As Integer
                Dim iva As Integer
                Dim total As Integer

                Dim totalFicticioMateriales As Integer = 0
                Dim totalFicticioAct As Integer = 0

                Dim i As Integer

                For i = 0 To Me.GridItems.Rows.Count - 1
                    Dim id As Integer = CInt(Me.GridItems.Rows(i).Cells(0).Text)
                    totalFicticioMateriales = totalFicticioMateriales + CInt(CL.obtenerValorItem(id).Item(0))
                    totalFicticioAct = totalFicticioAct + CInt(CL.obtenerValorItem(id).Item(1))


                Next


                Dim nfi As NumberFormatInfo = New CultureInfo("en-US", False).NumberFormat
                nfi.CurrencyDecimalDigits = 0
                nfi.CurrencyGroupSeparator = "."


                Me.TxtTotalPresupuesto.Text = (totalFicticioMateriales + totalFicticioAct).ToString("C", nfi)
                precioclientepresupesto = totalFicticioMateriales + totalFicticioAct

                Me.txtMatTotal.Text = totalFicticioMateriales.ToString("C", nfi)
                Me.txtActTotal.Text = totalFicticioAct.ToString("C", nfi)

                Dim usuario As Usuario = DirectCast(Session("usuarioConectado"), Usuario)



                Dim nuevoPresupuesto As New Presupuesto(Me.lblIdPresupuesto.Text, Me.TxtFecha.Text, TxtCondVenta.Text, TxTatencion.Text, TxTGarantia.Text, _
                                TxTEntrega.Text, TxTPlano.Text, neto, iva, total, CInt(eliminarFormatoNumero(Me.TxtGastosGralMat.Text)), CInt(eliminarFormatoNumero(TxTPorMate.Text)), _
                              CInt(eliminarFormatoNumero(Me.TxtUtilMat.Text)), CInt(eliminarFormatoNumero(TxTDescuentoMat.Text)), cliente.ID, DropVendedor.Text, TxTRequisicion.Text, "P", CInt(Me.TxtCantidadCabezera.Text), Me.TxtDescripcionGeneral.Text, _
                             usuario.ID, Date.Now, Me.TxTEstimadoSr.Text, Me.TxTPrecio.Text, Me.TxTCondiciones.Text, Me.TxTPlazosEntrega.Text, Me.TxTLugarEntrega.Text, Me.TxTValidezOferta.Text, CInt(precioclientepresupesto))

                CL.ActualizarPresupuestoTemporal(nuevoPresupuesto)

            End If
        Catch ex As Exception
            LblAvisoLlenarCampos.Text = ex.ToString
        End Try

    End Sub

#End Region

#Region "Bloque Reporte"
    'Funciones de despliegue de reporte

    Public Function CargarPresupuesto() As Boolean

        Dim cliente As Cliente = DirectCast(CL.obtenerClienteID(DropCliente.SelectedValue).Item(0), Cliente)

        Dim myRowCabezera As DataRow = Me.dataPresupuestoCliente.datosPresupuestoCabezera.NewRow
        Dim myRowFooter As DataRow = Me.dataPresupuestoCliente.datosPresupuestoPies.NewRow
        Dim arrayListSubProy As ArrayList = CL.obtenerSubProyectoCriterio(Me.lblIdPresupuesto.Text)
        Dim myRowCuerpo As DataRow

        Try
            ' Carga De Datos del Cabezera
            myRowCabezera.Item("nombre") = cliente.RznSocial
            myRowCabezera.Item("direccion") = cliente.Direccion
            myRowCabezera.Item("rut") = cliente.Rut
            myRowCabezera.Item("telefono") = cliente.Telefono
            myRowCabezera.Item("fecha") = Me.TxtFecha.Text
            myRowCabezera.Item("descripcion") = Me.TxtDescripcionGeneral.Text
            myRowCabezera.Item("atencion") = TxTatencion.Text
            myRowCabezera.Item("estimadoseñor") = TxTEstimadoSr.Text
            myRowCabezera.Item("cantidad") = Me.TxtCantidadCabezera.Text
            myRowCabezera.Item("numeropresupuesto") = Me.lblIdPresupuesto.Text

            Me.dataPresupuestoCliente.datosPresupuestoCabezera.Rows.Add(myRowCabezera)

            ' Carga De Datos del Cuerpo
            For i As Integer = 0 To arrayListSubProy.Count - 1
                myRowCuerpo = Me.dataPresupuestoCliente.datosPresupuestoCuerpo.NewRow
                Dim subProy As presupuestosubproyecto = DirectCast(arrayListSubProy.Item(i), presupuestosubproyecto)

                myRowCuerpo.Item("item") = subProy.nombreSubProyecto()
                myRowCuerpo.Item("descripcionItem") = subProy.descripcionSubProyecto
                myRowCuerpo.Item("cantidad") = CStr(subProy.Cantidad)
                myRowCuerpo.Item("unidadMedida") = subProy.UnidadMedida
                myRowCuerpo.Item("total") = CStr(CInt(CL.obtenerValorItem(subProy.id).Item(0)) + CInt(CL.obtenerValorItem(subProy.id).Item(1)))
                Me.dataPresupuestoCliente.datosPresupuestoCuerpo.Rows.Add(myRowCuerpo)
            Next


            ' Carga De Datos piez
            myRowFooter.Item("condiciones") = Me.TxTCondiciones.Text
            myRowFooter.Item("precios") = Me.TxTPrecio.Text
            myRowFooter.Item("plazosDeEntrega") = Me.TxTPlazosEntrega.Text
            myRowFooter.Item("lugarDeEntrega") = Me.TxTLugarEntrega.Text
            myRowFooter.Item("validezDelaOferta") = Me.TxTValidezOferta.Text
            Me.dataPresupuestoCliente.datosPresupuestoPies.Rows.Add(myRowFooter)

            Return True

        Catch ex As Exception
            Me.Mensaje(ex.ToString)
            Return False
        End Try
    End Function

    Public Sub GuardarReporte(ByVal repo As ReportDocument)

        Dim fileName As String = Server.MapPath("~\Interfaz\Reportes\ReportePresupuestoCliente.rpt")
        repo.Load(fileName)
        repo.SetDataSource(dataPresupuestoCliente)

        Dim info As CrystalDecisions.CrystalReports.Engine.ReportDocument = repo
        info.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Portrait
        info.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperLetter
        Dim rptStream As New System.IO.MemoryStream
        rptStream = CType(info.ExportToStream(CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat), System.IO.MemoryStream)
        Response.Clear()
        Response.ClearContent()
        Response.ClearHeaders()
        Response.Buffer = False
        Response.ContentType = "application/vnd.pdf"
        Response.AddHeader("Content-Disposition", "attachment;filename=Presupuesto-" + Me.lblIdPresupuesto.Text + ".pdf")
        Response.Flush()
        Response.BinaryWrite(rptStream.ToArray())
        Response.End()

    End Sub

#End Region

#Region "Botones"
    Protected Sub BuscarPresupuestoAntiguo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BuscarPresupuestoAntiguo.Click
        Try
            Me.BtnUpdateCampos.Visible = True
            CargarPresupuestosAntiguos("No Aprobados")
            Me.actualizarPresupuesto()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
        
    End Sub


    Protected Sub BtnBuscarPresupuestosAprobados_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnBuscarPresupuestosAprobados.Click
        Me.BtnUpdateCampos.Visible = True
        CargarPresupuestosAntiguos("Aprobados")
        Me.actualizarPresupuesto()
    End Sub

    Protected Sub BtnIngresarItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnIngresarItem.Click
        Me.InsertarItemActividadDB()
        Session("PresupuestoActPag2") = Nothing
        Session("PresupuestoMat") = Nothing
    End Sub

    Protected Sub BtnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnGuardar.Click
        finiquitarPresupuesto()

    End Sub

    Protected Sub BtnVisualizar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnVisualizar.Click
        Dim repo As New ReportDocument
        CargarPresupuesto()
        GuardarReporte(repo)
    End Sub


    Protected Sub agregarItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles agregarItem.Click
        Me.BtnUpdateCampos.Visible = True
        agregarPresupuestoCabezera()
    End Sub

#End Region

#Region "Utilidades"
    Private Sub LimpiarItem()
        Me.TxTtareaRealizar.Text = String.Empty
        Me.TxTObservacionTaller.Text = String.Empty
        Me.TxTNotasClientes.Text = String.Empty
        Me.TxtDescripcionTrabajo.Text = String.Empty
        Me.TxTNotasVentas.Text = String.Empty
    End Sub

    Private Sub FuncionAbrirVentana(ByVal url As String)
        ClientScript.RegisterStartupScript(Me.GetType(), "AbrirVentana;", "window.open(" & url & ",'','width=1000,height=600,menubar=1,resizable=1,scrollbars=1');", True)
    End Sub

    Public Function eliminarFormatoNumero(ByVal valor As String) As String
        valor = Replace(valor, "$", "")
        valor = Replace(valor, ",", "")
        valor = Replace(valor, "%", "")
        Return valor
    End Function

    Public Sub addAtributesToData()

        Me.TxtCantidadSubProyecto.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")

        Me.TxtTotalPresupuesto.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        Me.TxtTotalPresupuesto.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxtTotalPresupuesto.Attributes.Add("Onblur", "addsimbol(this);")

        Me.TxtCantidadCabezera.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxTPrecio.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        '    Me.TxTPrecio.Attributes.Add("Onblur", "addsimbol(this);")

        Me.TxtGastosGralMat.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxtGastosGralMat.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxtGastosGralMat.Attributes.Add("Onblur", "addsimbol(this,2);")

        Me.TxTPorMate.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxTPorMate.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxTPorMate.Attributes.Add("Onblur", "addsimbol(this,2);")

        Me.TxtUtilMat.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxtUtilMat.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxtUtilMat.Attributes.Add("Onblur", "addsimbol(this,2);")

        Me.TxTDescuentoMat.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxTDescuentoMat.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxTDescuentoMat.Attributes.Add("Onblur", "addsimbol(this,2);")
    End Sub

    Public Sub Mensaje(ByVal msg As String)
        Dim alertScript As String = "<script language=JavaScript>"
        alertScript &= "alert('" & msg & "');"
        alertScript &= "</script>"
        ClientScript.RegisterClientScriptBlock(Page.GetType(), "clientScrip", alertScript)
    End Sub

#End Region

#Region "Eventos Grid"

    Protected Sub GridItems_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridItems.RowCommand
        Try
            Dim accion As String = e.CommandName.ToString
            Dim url As String = ""
            Dim index As String = CInt(e.CommandArgument)
            Dim subProy As String = Me.GridItems.Rows(index).Cells(0).Text

            If accion = "AgregarMaterial" Then
                url = """popUpMateriales.aspx?pNumFila=" & subProy & """"
                FuncionAbrirVentana(url)
            Else
                If accion = "AgregarActividad" Then
                    url = """popUpActividades.aspx?pNumFila=" & subProy & """ &pnumXX=""1"""
                    FuncionAbrirVentana(url)
                Else
                    If accion = "CalcularValoresItem" Then
                        url = """popUpTotalesItem.aspx?pNumFila=" & subProy & """"
                        FuncionAbrirVentana(url)
                    End If
                End If
            End If
        Catch ex As Exception
            Me.Mensaje(ex.ToString)
        End Try

    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnUpdateCampos.Click
        actualizarPresupuesto()
    End Sub
#End Region
End Class
